package batching;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class TextBatch {
	/**将文件中的内容转换成字符串
	 * @param path (String) 文件的地址
	 * @return String 返回字符串
	 * 
	 * */
	public String fileToString(String path) {
		String str=null;
		StringBuffer sb=new StringBuffer();
		BufferedReader buffer = null;
		try {
			File file=new File(path);
			buffer = new BufferedReader(new FileReader(file));
			while ((str = buffer.readLine()) != null) {
				sb.append(str);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
			
		}finally{
			try {
				buffer.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}
	
	
	/**将文件中的内容转换成字符串数组并返回
	 * @param path (String) 文件的地址
	 * @return String[] 返回字符串
	 * */
	public String[] fileToStrArray(String path){
		String[] strArray=null;
		String str=null;
		StringBuffer sb=new StringBuffer();
		BufferedReader buffer = null;
		int i=0;
		try {
			File file=new File(path);
			buffer = new BufferedReader(new FileReader(file));
			while ((str = buffer.readLine()) != null) {
//				sb.append(str);
				strArray[i++]=str;
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
			
		}finally{
			try {
				buffer.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return strArray;
	}
	
	/**将字符串写入到文件，不需要提前创建文件
	 * @param strcontent (String)表示要写入的字符串
	 * @param strtoname (String)表示写入字符串的文件名称，包括文件夹的绝对路径、包括文件后缀名 ，例如 ：destFile + "\\"+fileName+i+ ".txt"
	 * @return String 返回要写入的字符串。
	 * */
	public String writeTxt(String strcontent, String strtoname) {
		File Todoc = new File(strtoname);
		FileWriter toname = null;
		try {
			Todoc.createNewFile();
			toname = new FileWriter(Todoc);
		} catch (IOException e) {
			e.printStackTrace();
		}
		PrintWriter pw = new PrintWriter(toname);
		pw.print(strcontent);
		pw.flush();
		pw.close();
		return strcontent;
	}
	
	/**批处理框架，从源文件夹地址逐个处理后，写入到目标文件夹地址，自动创建目标文件夹下的文件。
	 * @param dir (String)要读取的文件夹源地址
	 * @param dest (String)要写入的文件夹目的地址
	 * @param fileName (String)文件的部分标识名字
	 * @return void
	 * */
	public void writeDoc(String dir, String dest,String fileName) {
		File fileDir = new File(dir);
		File[] textFiles = fileDir.listFiles();
		String content = null;
		for (int i = 0; i < textFiles.length; i++) {
			
			if (textFiles[i].isFile()&& textFiles[i].getName().endsWith(".txt")) {
				try {
					content = fileToString(textFiles[i].getCanonicalPath());
					//此处填写需要批处理的程序块
					
					writeTxt(content, dest + "\\"+fileName+i+ ".txt");
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	/**
	 * 将字符串写入文本中，添加到文本末尾处.
	 * @param path (String)要将文本添置末尾的文件绝对路径
	 * @param text (String)要添加的文本内容
	 * @return void 
	 * */
	public void writeText2End(String path,String text){
		File file = new File(path);
		try {
			BufferedWriter bw=new BufferedWriter(new FileWriter(file,true));
			bw.write(text);
			bw.newLine();
			bw.flush();
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
